package br.com.foxinline.manager.criar;

import br.com.foxinline.modelo.Ato;
import br.com.foxinline.modelo.Emolumento;
import br.com.foxinline.modelo.EmolumentoItem;
import br.com.foxinline.servico.AtoServico;
import br.com.foxinline.servico.EmolumentoItemServico;
import br.com.foxinline.servico.EmolumentoServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerCriarEmolumento implements Serializable {
    
    @EJB
    EmolumentoServico emolumentoServico;
    @EJB
    EmolumentoItemServico emolumentoItemServico;
    @EJB
    AtoServico atoServico;
        
    private Emolumento emolumento;
    private EmolumentoItem emolumentoItem;
    private List<EmolumentoItem> emolumentoItens;
    
    private Ato atoPesquisar;
    private Ato atoSelecionado;
    private List<Ato> atos;
    
    private String editarId;
    
    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }

    private void instanciar() {
        this.emolumento = new Emolumento();
        this.emolumentoItem = new EmolumentoItem();
        this.emolumentoItens = new ArrayList<EmolumentoItem>();
        this.atoPesquisar = new Ato();
        this.atoSelecionado = new Ato();
        this.atos = new ArrayList<Ato>();
    }
    
    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.editarId = parametros.get("emolumentoId");        
        
        if (this.editarId != null) {
            this.emolumento = emolumentoServico.pesquisar(Long.valueOf(this.editarId));
            this.emolumentoItens = emolumentoItemServico.pesquisar(this.emolumento);
        }
    }    
    
    public void pesquisarAtos() {
        this.atos = atoServico.pesquisar(this.atoPesquisar);
    }
    
    public void selecionarAto() {
        this.emolumentoItem.setAtoItem(this.atoSelecionado);

        this.atoPesquisar = new Ato();
        this.atoSelecionado = new Ato();
        this.atos = new ArrayList<Ato>();
    }
    
    public void cancelar() {
        this.atoPesquisar = new Ato();
        this.atoSelecionado = new Ato();
        this.atos = new ArrayList<Ato>();
    }
    
    public void adicionarItem() {
        this.emolumentoItens.add(this.emolumentoItem);
        this.emolumentoItem = new EmolumentoItem();
    }
    
    public void editarItem(EmolumentoItem item) {       
        this.emolumentoItem = item;
        removerItem(item);
    }
    
    public void removerItem(EmolumentoItem item) {
        this.emolumentoItens.remove(item);
    }
    
    public void limpar() {
        this.emolumentoItem = new EmolumentoItem();
    }
    
    public void salvar() {
        String mensagem;

        this.emolumento.setEmolumentoItem(this.emolumentoItens);
        
        if (this.emolumento.getId() == null) {
            emolumentoServico.salvar(this.emolumento);
            mensagem = "Emolumento cadastrado com sucesso!";
            instanciar();
        } else {
            emolumentoServico.atualizar(this.emolumento);
            mensagem = "Emolumento atualizado com sucesso!";
        }
             
        Mensagem.messagemInfo(mensagem);
    }

    public Emolumento getEmolumento() {
        return emolumento;
    }

    public void setEmolumento(Emolumento emolumento) {
        this.emolumento = emolumento;
    }

    public EmolumentoItem getEmolumentoItem() {
        return emolumentoItem;
    }

    public void setEmolumentoItem(EmolumentoItem emolumentoItem) {
        this.emolumentoItem = emolumentoItem;
    }

    public Ato getAtoPesquisar() {
        return atoPesquisar;
    }

    public void setAtoPesquisar(Ato atoPesquisar) {
        this.atoPesquisar = atoPesquisar;
    }

    public Ato getAtoSelecionado() {
        return atoSelecionado;
    }

    public void setAtoSelecionado(Ato atoSelecionado) {
        this.atoSelecionado = atoSelecionado;
    }

    public List<Ato> getAtos() {
        return atos;
    }

    public void setAtos(List<Ato> atos) {
        this.atos = atos;
    }

    public List<EmolumentoItem> getEmolumentoItens() {
        return emolumentoItens;
    }

    public void setEmolumentoItens(List<EmolumentoItem> emolumentoItens) {
        this.emolumentoItens = emolumentoItens;
    }

}
